package com.eastfair.messagecenter.dto;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.eastfair.core.context.ContextUtil;
import com.eastfair.messagecenter.ContentModel;
import com.eastfair.messagecenter.enumeration.ChannelType;
import com.eastfair.messagecenter.enumeration.MsgContentType;
import com.eastfair.messagecenter.enumeration.MsgType;
import com.eastfair.messagecenter.model.SmsContentModel;
import com.eastfair.point.PointKeyDefinition;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

/**
 * 短信发送DTO
 */
@Data
//@Builder
public class SmsSendDTO implements Serializable {
    /**
     * 业务Id(数据追踪使用)
     */
    private String businessId;


    /**
     * 业务类型，由业务方自己定
     */
    private String businessType="OTHER";

    /**
     * 消息类型
     * #MsgType{WAIT:待办;NOTIFY:通知;PUBLICITY:公告;WARN:预警;}
     */
    private MsgType msgType = MsgType.NOTIFY;

    /**
     * 消息内容类型
     * #MsgContentType{SYSTEM:系统消息;BUSINESS:业务消息;OPERATION:运营消息;}
     */
    @ApiModelProperty(value = "消息内容类型")
    private MsgContentType msgContentType = MsgContentType.BUSINESS;


    /**
     * 发送手机号
     */
    @ApiModelProperty(value = "发送手机号")
    private Set<String> mobileList;

    /**
     * 发送手机号
     */
    @ApiModelProperty(value = "发送手机号")
    private String mobileStr;


    /**
     * 发送用户id
     */
    @ApiModelProperty(value = "发送用户id")
    private Set<Long> senUserIdList;

    /**
     * 发送组织id
     */
    @ApiModelProperty(value = "发送组织id")
    private Set<Long> orgIdList;

    /**
     * 发送给全体用户
     */
    @ApiModelProperty(value = "发送给全体用户")
    private Boolean isSendAll;


    /**
     * 发送渠道类型枚举  INNER_IM:站内信,SMS:短信,EMAIL:邮件
     */
    @ApiModelProperty(value = "发送渠道类型")
    private ChannelType channelType = ChannelType.SMS;
    /**
     * 发送内容集合
     */
    @ApiModelProperty(value = "发送内容集合")
    private List<SmsContentModel> smsContentModelList;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    private Long subsystemId;

    /**
     * 团队id 服务商id
     */
    @ApiModelProperty(value = "团队id")
    private Long teamId;

    /**
     * 是否立即发送 1是 0否
     */
    @ApiModelProperty(value = "是否立即发送 1是 0否")
    private Integer isSendNow;

    /**
     * 预计发送时间
     */
    @ApiModelProperty(value = "预计发送时间")
    private LocalDateTime predictSendTime;

    /**
     * 系统场景#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统}
     */
    @ApiModelProperty(value = "系统场景#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统}")
    private String systemScene;
}
